package com.miniprogram.common.enums;

import com.miniprogram.bean.vo.EnumVo;

import java.util.ArrayList;
import java.util.List;

/**
 * 订单状态类型
 *
 * @author lin
 * @since 2020年1月7日
 */
public enum OrderStatusEnum {

    // 无状态，待支付
    NONE(1, "待支付"),
    // 支付成功，待使用
    DEAL_END(2, "支付成功"),
    // 已使用，待评价
    USED(3, "已使用"),
    // 已取消
    AUTO_CANCEL(4, "系统自动取消"),
    // 已取消
    CANCEL(5, "已取消"),
    // 待退款
    WAIT_REFUND(6, "待退款"),
    // 退款完毕
    REFUNDED(7, "退款完毕"),
    // 已评价
    ALREADY_REMARK(8, "已评价");

    private Integer code;

    private String description;

    OrderStatusEnum(Integer code, String description) {
        this.code = code;
        this.description = description;
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public static List<EnumVo> getAll() {
        List<EnumVo> list = new ArrayList<>();
        for (OrderStatusEnum restStatusEnum : OrderStatusEnum.values()) {
            EnumVo vo = new EnumVo();
            vo.setCode(restStatusEnum.getCode());
            vo.setDescription(restStatusEnum.getDescription());
            list.add(vo);
        }
        return list;
    }

    public static String valueOfCode(Integer code) {
        for (OrderStatusEnum orderStatusEnum : OrderStatusEnum.values()) {
            if (orderStatusEnum.code.equals(code)) {
                return orderStatusEnum.description;
            }
        }
        return "";
    }
}
